
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2002, John K. Grant and Perry L. Miller IV.
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//
//  Identity matrix functor.
//
///////////////////////////////////////////////////////////////////////////////

#include "Interaction/Matrix/IdentityMatrix.h"

using namespace Usul::Functors::Interaction::Matrix;


///////////////////////////////////////////////////////////////////////////////
//
//  Default constructor.
//
///////////////////////////////////////////////////////////////////////////////

IdentityMatrix::IdentityMatrix ( Unknown *caller, const std::string &name ) : BaseClass ( caller, name )
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Copy constructors.
//
///////////////////////////////////////////////////////////////////////////////

IdentityMatrix::IdentityMatrix ( const IdentityMatrix &cb ) : BaseClass ( cb )
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Destructors.
//
///////////////////////////////////////////////////////////////////////////////

IdentityMatrix::~IdentityMatrix()
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Update the matrix.
//
///////////////////////////////////////////////////////////////////////////////

void IdentityMatrix::operator()()
{
  Guard guard ( this->mutex() );
  _matrix.identity(); // Probably already is identity...
}


///////////////////////////////////////////////////////////////////////////////
//
//  Clone.
//
///////////////////////////////////////////////////////////////////////////////

Usul::Functors::Interaction::Common::BaseFunctor* IdentityMatrix::clone()
{
  return new IdentityMatrix ( *this );
}
